Multi-Core Processing
If installed on a multi-core computer, PetroVR can distribute Monte Carlo and MC in Scenarios runs between its cores to optimize calculation times.
How Multi-Core Processing Works
At the beginning of a Monte Carlo run, a separate instance of PetroVR is started in Headless Mode (Batch Processing) for each additional core, and the number of iterations is divided by the number of cores. Then each instance is assigned a fixed number of iterations to be processed. This assignation will be honored even if one or more of the cores becomes idle because of differences in the size and complexity of the iterations.
Thus, for a variety of reasons, the time gained by resorting to multiple cores cannot be calculated as the total calculation time divided by the number of cores. The creation of headless instances of the application consumes computational resources, and differences between iterations can cause some cores to finish before others. The actual optimization rate will depend mostly on the number of iterations to be run making up for this overhead - the larger this number, the closer the overall performance will be to the ideal ratio of total computation time / number of cores.
In order to use Multi-Core processing in PetroVR a special license type is required. Please contact the PetroVR Help Desk for more information.
Only real (not virtual) cores can provide a real improvement in computation time. If the OS creates virtual cores, PetroVR will distribute iterations accordingly but without real benefits since there is only one real core working.
Projects that use both Input Modes and Excel Output cannot be run in Multi-core. Excel spreadsheets cannot be written and read from iterations running concurrently because of possible simultaneity conflicts: one process might be reading what another wrote instead of the intended value.
Each multi-core process loads the Working with Updates included in the updates.bnd file. The manual loading or unloading of any update in the current session will not be honored by these processes. If you use only update packs, it is safe to ignore this point.
While the simulation runs, the counter "Working cores: x/x" indicates the number of processes that are actually working since they have ranges assigned. This number may be lower than the total available cores if some cores are temporarily idle - for example, while running Monte Carlo on Scenarios, where all the cases of each scenario are completed before starting with the next, the simulation may begin with 4/4, then as processes finish show 3/4, 2/4, 1/4, and then it will return to 4/4 when the simulation starts running the next scenario.